// pages/checkDetial/checkDetial.js
import * as echarts from '../../ec-canvas/echarts';
const db=wx.cloud.database();
const _ = db.command;

Page({

  // 页面的初始数据
  data: {
    patient: [],  // 储存病人基本信息
    patient_id: '',   // 存储病人id

    //储存病人17项的详细数据信息，每个格式为日期和数值的二元组组成的数组
    WBC: [], 
    HB: [],
    PLT: [],
    TB: [],
    ALT: [],
    AST: [],
    GGT: [],
    ALB: [],
    ALP: [],
    FK浓度: [],
    FK: [],
    激素: [],
    T管: [],
    体温: [],
    入量: [],
    出量: [],
    尿量: [],
    datetime:[],

    //echarts图表
    ec1: {
      lazyLoad: true
    },
    ec2: {
      lazyLoad: true
    },

    //折线图弹框
    chart_id:"WBC",  
    getChartIdToAo:"",   show_chart_id:false,  gender_chart_id:"", //该变量最终没有用到

    //红名判断变量
    name_red:false,
    //痊愈计算变量
    recover_red:"",
    //痊愈判断变量
    recover_judge:true,

    //用户画像-标签
    personas_tags:[],
    //用户画像-标签弹框
    getPersonasTagsToAo:"",   show_personas_tags:false,  gender_personas_tags:"",

    //修改页面跳转，获取最新日期数据的_id
    change_ao_id:"",
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    //初始化echarts
    this.echartsComponnet1 = this.selectComponent('#mychart1');
    this.echartsComponnet2 = this.selectComponent('#mychart2');
    wx.showLoading({
      title: '加载中...',
      mask: true
    })
    // 获取病人基本信息
    wx.cloud.callFunction({
      name: 'wwxFuns3',
      data:({
        name: 'get_patient',
        patient_id: options.id
      })
    })
    .then(res => {
      this.setData({
        patient: res.result,
        patient_id: options.id,
        //用户画像-标签
        personas_tags:res.result.personas_tags
      })
      console.log(res.result)
    })
    .catch(res => {
      console.log('error! huang')
    })

    // 获取病人所有指标
    wx.cloud.callFunction({
      name: 'wwxFuns3',
      data:({
        name: 'get_checks',
        id: options.id
      })
    })
    .then(res => {
      //修改页面跳转，获取最新日期数据的_id
      this.setData({change_ao_id:res.result[0]._id})
      
      //新建17个传参数组(WBC,HB,PLT,TB,ALT,AST,GGT,ALV,ALP,FK浓度,FK,激素,T管,体温,入量,出量,尿量)
      var data_WBC=[];var data_HB=[];var data_PLT=[];var data_TB=[];var data_ALT=[];var data_AST=[];var data_GGT=[];var data_ALB=[];var data_ALP=[];var data_FK浓度=[];var data_FK=[];var data_激素=[];var data_T管=[];var data_体温=[];var data_入量=[];var data_出量=[];var data_尿量=[];var data_datetime=[];
      //对数组赋值
      for (var i=0;i<res.result.length;i++)
      { 
        data_WBC[i]={date:res.result[i].ao_time,value:res.result[i].ao_index[0].value}
        data_HB[i]={date:res.result[i].ao_time,value:res.result[i].ao_index[1].value}
        data_PLT[i]={date:res.result[i].ao_time,value:res.result[i].ao_index[2].value}
        data_TB[i]={date:res.result[i].ao_time,value:res.result[i].ao_index[3].value}
        data_ALT[i]={date:res.result[i].ao_time,value:res.result[i].ao_index[4].value}
        data_AST[i]={date:res.result[i].ao_time,value:res.result[i].ao_index[5].value}
        data_GGT[i]={date:res.result[i].ao_time,value:res.result[i].ao_index[6].value}
        data_ALB[i]={date:res.result[i].ao_time,value:res.result[i].ao_index[7].value}
        data_ALP[i]={date:res.result[i].ao_time,value:res.result[i].ao_index[8].value}
        data_FK浓度[i]={date:res.result[i].ao_time,value:res.result[i].ao_index[9].value}
        data_FK[i]={date:res.result[i].ao_time,value:res.result[i].ao_index[10].value}
        data_激素[i]={date:res.result[i].ao_time,value:res.result[i].ao_index[11].value}
        data_T管[i]={date:res.result[i].ao_time,value:res.result[i].ao_index[12].value}
        data_体温[i]={date:res.result[i].ao_time,value:res.result[i].ao_index[13].value}
        data_入量[i]={date:res.result[i].ao_time,value:res.result[i].ao_index[14].value}
        data_出量[i]={date:res.result[i].ao_time,value:res.result[i].ao_index[15].value}
        data_尿量[i]={date:res.result[i].ao_time,value:res.result[i].ao_index[16].value}
        let data_changetime=new Date(res.result[i].ao_time)
        data_datetime[i]=data_changetime.getMonth()+1+'-'+data_changetime.getDate()
      }

      //用新建17个数组对data中17个数组赋值
      this.setData({
        WBC:data_WBC,
        HB:data_HB,
        PLT:data_PLT,
        TB:data_TB,
        ALT:data_ALT,
        AST:data_AST,
        GGT:data_GGT,
        ALB:data_ALB,
        ALP:data_ALP,
        FK浓度:data_FK浓度,
        FK:data_FK,
        激素:data_激素,
        T管:data_T管,
        体温:data_体温,
        入量:data_入量,
        出量:data_出量,
        尿量:data_尿量,
        datetime:data_datetime
      })
      this.getData(); //获取数据

      //红名判断（WBC数据）
      if(data_WBC.length<3){  //if语句无法使用 and 和 or
        //无操作c
      }else if(res.result[res.result.length-3].ao_index[0].value<=14){
        if(res.result[res.result.length-3].ao_index[0].value>=10){
          //无操作
        }else if(res.result[res.result.length-2].ao_index[0].value<=14){
          if(res.result[res.result.length-2].ao_index[0].value>=10){
            //无操作
          }else if(res.result[res.result.length-1].ao_index[0].value<=14){
            if(res.result[res.result.length-1].ao_index[0].value>=10){
              //无操作
            }else{
              var recover_days;  //痊愈天数计算变量
              var y1=res.result[res.result.length-3].ao_index[0].value;
              var y2=res.result[res.result.length-2].ao_index[0].value; 
              var y3=res.result[res.result.length-1].ao_index[0].value;
              if(y3-y1>0){  //该情况下斜率大于0才能计算痊愈天数
                recover_days=Math.ceil((8-(2*y1+2*y2+2*y3)/3)/(y3-y1)-3);
                this.setData({name_red:true, recover_judge:true, recover_red:recover_days});
              }else{
                this.setData({name_red:true, recover_judge:false});
              }
            }
          }
        }
      }
      if(data_WBC.length<3){  //if语句无法使用 and 和 or
        //无操作c
      }else if(res.result[res.result.length-3].ao_index[0].value>=10){
        if(res.result[res.result.length-3].ao_index[0].value<=14){
          //无操作
        }else if(res.result[res.result.length-2].ao_index[0].value>=10){
          if(res.result[res.result.length-2].ao_index[0].value<=14){
            //无操作
          }else if(res.result[res.result.length-1].ao_index[0].value>=10){
            if(res.result[res.result.length-1].ao_index[0].value<=14){
              //无操作
            }else{
              var recover_days;  //痊愈天数计算变量
              var y1=res.result[res.result.length-3].ao_index[0].value;
              var y2=res.result[res.result.length-2].ao_index[0].value; 
              var y3=res.result[res.result.length-1].ao_index[0].value;
              if(y3-y1<0){  //该情况下斜率小于0才能计算痊愈天数
                recover_days=Math.ceil((8-(2*y1+2*y2+2*y3)/3)/(y3-y1)-3);
                this.setData({name_red:true, recover_judge:true, recover_red:recover_days});
              }else{
                this.setData({name_red:true, recover_judge:false});
              }
            }
          }
        }
      }

     //加载
      wx.hideLoading()
    })
    .catch(res => {
      console.log('error! huang')
    })
  },

  //获取图表数据
  getData(){
    this.init_echarts1(this.data.WBC);//初始化图表1
    // this.init_echarts2(this.data.HB);//初始化图表2
  },

  //初始化图表1
  init_echarts1: function (data) {
    this.echartsComponnet1.init((canvas, width, height) => {
      // 初始化图表
      const Chart = echarts.init(canvas, null, {
        width: width,
        height: height
      });
      Chart.setOption(this.getOption(data));
      // 注意这里一定要返回 chart 实例，否则会影响事件处理等
      return Chart;
    });
  },
  //初始化图表2
  init_echarts2: function (data) {
    this.echartsComponnet2.init((canvas, width, height) => {
      // 初始化图表
      const Chart = echarts.init(canvas, null, {
        width: width,
        height: height
      });
      Chart.setOption(this.getOption(data));
      // 注意这里一定要返回 chart 实例，否则会影响事件处理等
      return Chart;
    });
  },

  //对表格数据进行绑定
  getOption: function (data) {
    // 指定图表的配置项和数据
    console.log(data)
    var option = {
      title: {
        //text: '',
        //subtext: '',
        left: 'center'
      },
      tooltip: {
        trigger: 'axis'
      },
      grid: {
        left: '3%',
        right: '13%',
        bottom: '3%',
        containLabel: true
      },
      dataZoom: [
        {
          type: 'inside'
        }
      ],
      dataset: {
        // source: [
        //   ['product', '2015', '2016', '2017']
        // ]
      },
      xAxis: {
        name: '时间',
        type: 'category',
        data: this.data.datetime
      },
      yAxis: {
        name: '数值',
        type: 'value',
      },
      series: [
          {
              type: 'line',
              data: data,
              smooth: true,
              label: {
                show: true,
                position: 'top',
                textStyle: {
                  fontSize: 13
                }
              },
              markLine: { //虚线
                silent: true, //不交互
                symbolSize: 5,  //箭头大小  
                lineStyle: {
                  color: '#fac858'
                },
                data: [
                  {
                    yAxis: 10
                  },
                  {
                    yAxis: 14
                  },
                ]
              }  
          },
      ]
    }
    return option;
  },

  //选择折线图的弹框
  showPopup_chart_id(e){      //点击选择性别，打开弹出层（选择器）
    this.setData({
      columns_chart_id:['WBC','HB','PLT','TB','ALT','AST','GGT','ALV','ALP','FK浓度','FK','激素','T管','体温','入量','出量','尿量'],
      show_chart_id:true
    })
  },
  onClose_chart_id() {     //点击空白处开闭弹出层（选择器）及选择器左上角的取消
    this.setData({ show_chart_id: false });
  },
  onConfirm_chart_id(e){    //选择器右上角的确定，点击确定获取值
    this.setData({
      gender_chart_id:e.detail.value,
      chart_id:e.detail.value,
      show_chart_id:false
    });
    //更新图表数据
    switch(e.detail.value){ 
      case "WBC" : this.init_echarts1(this.data.WBC); break;
      case "HB" : this.init_echarts1(this.data.HB); break;
      case "PLT" : this.init_echarts1(this.data.PLT); break;
      case "TB" : this.init_echarts1(this.data.TB); break;
      case "ALT" : this.init_echarts1(this.data.ALT); break;
      case "AST" : this.init_echarts1(this.data.AST); break;
      case "GGT" : this.init_echarts1(this.data.GGT); break;
      case "ALV" : this.init_echarts1(this.data.ALV); break;
      case "ALP" : this.init_echarts1(this.data.ALP); break;
      case "FK浓度" : this.init_echarts1(this.data.FK浓度); break;
      case "FK" : this.init_echarts1(this.data.FK); break;
      case "激素" : this.init_echarts1(this.data.激素); break;
      case "T管" : this.init_echarts1(this.data.T管); break;
      case "体温" : this.init_echarts1(this.data.体温); break;
      case "入量" : this.init_echarts1(this.data.入量); break;
      case "出量" : this.init_echarts1(this.data.出量); break;
      case "尿量" : this.init_echarts1(this.data.尿量); break;
    }
  },

    //用户画像-标签的弹框
    showPopup_personas_tags(e){      //点击选择性别，打开弹出层（选择器）
      this.setData({
        columns_personas_tags:['推荐住院','推荐手术','观察期','趋于好转','病情不稳定','疑难杂症'],
        show_personas_tags:true
      })
    },
    onClose_personas_tags() {     //点击空白处开闭弹出层（选择器）及选择器左上角的取消
      this.setData({ show_personas_tags: false });
    },
    onConfirm_personas_tags(e){    //选择器右上角的确定，点击确定获取值
      this.data.personas_tags.push(e.detail.value);
      this.setData({
        gender_personas_tags:this.data.personas_tags,
        personas_tags:this.data.personas_tags,
        show_personas_tags:false
      });
      // 将修改的标签数据存入数据库
      db.collection("patient").where({
        _id: this.data.patient_id
      }).update({
            data:{
              personas_tags:this.data.personas_tags
            } 
      });
    },

    //用户画像-标签删除的弹框
    showPopup_personas_tags_delete(e){      //点击选择性别，打开弹出层（选择器）
      this.setData({
        columns_personas_tags_delete:['删除'],
        show_personas_tags_delete:true
      })
    },
    onClose_personas_tags_delete() {     //点击空白处开闭弹出层（选择器）及选择器左上角的取消
      this.setData({ show_personas_tags_delete: false });
    },
    onConfirm_personas_tags_delete(e){    //选择器右上角的确定，点击确定获取值
      this.data.personas_tags.pop();
      this.setData({
        gender_personas_tags:this.data.personas_tags,
        personas_tags:this.data.personas_tags,
        show_personas_tags_delete:false
      });
      // 将修改的标签数据存入数据库
      db.collection("patient").where({
        _id: this.data.patient_id
      }).update({
            data:{
              personas_tags:this.data.personas_tags
            } 
      });
    },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },

  // 跳转到修改当日指标的页面
  toChange(){
    //获取病人id
    var id = this.data.change_ao_id
    // 跳转到修改页面 传递病人id 目前跳转到了值班表！
    wx.navigateTo({
      url: '../replacemodify/replace2_ao/ao?id='+ String(id),
    })
  },
})